interface Array<T> {
    foreach(callback: (item: T, index?: number, array?: T[]) => boolean | void): void;
    sum(iteratee?: (item: T) => number): number;
    groupBy(rule: (item: T) => unknown): Record<string, T[]>;
    at(index: number): T;
}